#include <Arduino.h>
#include <unity.h>
#include "led_control.h"

#define TEST_LED_PIN 2

// 测试前的设置
void setUp(void) {
  // 这里可以放置每个测试前的准备工作
}

// 测试后的清理
void tearDown(void) {
  // 这里可以放置每个测试后的清理工作
}

// 测试LED控制的初始化
void test_led_init(void) {
  LedControl led(TEST_LED_PIN);
  led.begin();
  TEST_ASSERT_EQUAL(false, led.getState());
}

// 测试LED控制的开关功能
void test_led_toggle(void) {
  LedControl led(TEST_LED_PIN);
  led.begin();
  
  // 初始状态应该是关闭的
  TEST_ASSERT_EQUAL(false, led.getState());
  
  // 打开LED
  led.turnOn();
  TEST_ASSERT_EQUAL(true, led.getState());
  
  // 关闭LED
  led.turnOff();
  TEST_ASSERT_EQUAL(false, led.getState());
  
  // 切换LED状态（开）
  led.toggle();
  TEST_ASSERT_EQUAL(true, led.getState());
  
  // 再次切换LED状态（关）
  led.toggle();
  TEST_ASSERT_EQUAL(false, led.getState());
}

void setup() {
  // 延迟2秒，确保开发板稳定
  delay(2000);
  
  // 初始化串口
  Serial.begin(115200);
  
  // 初始化Unity测试框架
  UNITY_BEGIN();
  
  // 运行测试用例
  RUN_TEST(test_led_init);
  RUN_TEST(test_led_toggle);
  
  // 结束测试
  UNITY_END();
}

void loop() {
  // 测试完成后不需要任何操作
} 